package com.brightworks.scripthelper.view
{
    import flash.events.Event;
    
    import mx.binding.utils.ChangeWatcher;
    
    import spark.components.Group;
    
    public class ViewBase extends Group
    {
        import com.brightworks.scripthelper.model.MainModel;
        
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
        //
        //          Getters & Setters
        //
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
        
        [Bindable (event="modelChange")]
        protected var _model:MainModel;

        public function set model(value:MainModel):void
        {
            _model = value;
            ChangeWatcher.watch(_model, "applicationState", onApplicationStateChange);
            onApplicationStateChange();
            dispatchEvent(new Event("modelChange"));
        }
        
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
        //
        //          Public Methods
        //
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
        
        public function ViewBase()
        {
            super();
            percentHeight = 100;
            percentWidth = 100;
        }
        
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
        //
        //          Protected Methods
        //
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
        
        protected function onApplicationStateChange(event:Event=null):void
        {
            // We do nothing here - this method can be overridden by subclasses
            // so that they can know when they become the active state, or, not.
        }
        
    }
}